Engineering practices in ML

Author

Lev Kovalenko

Зачем этот курс?

  • Познакомиться с повсеместными проблемами отрасли и их глубиной.
  • Узнать их негативное влияние на разных уровнях (разработчик, команда, компания, индустрия).
  • Изучить инструменты и практики позволяющие снизить это влияние.
  • Поднять уровень компетенций в области ML.

Почему такое название?

Современный data science и machine learning требуют написания большого количества кода. Прошли те дни когда все считалось на бумажках или в экселе. Теперь для разработки ML проектов требуется использование языков программирования общего пользования, библиотек и прочего. Собственно требуется “разработка ПО”. А это область давно и хорошо изучена.

Инженерные практики в разработке ПО

  • Test driven development
  • Refactoring
  • Design Improvement
  • Continuous integration - continuous delivery
  • Pair programming
  • Automated tests

В области разработки ПО уже давно используются различные инженерные практики, общепринятые подходы для развития и увеличения производительности команды разработки ПО. Зачастую они упоминаются в различных agile методологиях, но на самом деле могут существовать отдельно. Применение таких практик позволяет поддерживать хорошее качество кода и архитектуры, быстрее поставлять новые фичи, повышать уровень развития команды. Собственно применение этих практик уже устоявшаяся вещь в индустрии разработки ПО.

Что же с DS/ML?

мы математики, нам это не надо

Зачастую именно так, в области анализа данных и машинного обучения такого нет. Связано это с тем, что в проектах DS/ML идёт исследование, результатом которого может быть подтверждение или опровержение гипотезы. И код не является важным артефактом, так как в дальнейшем не будет использоваться. НО мало кто задумывается, что:

  • Исследование должно быть воспроизводимо.
  • Во время исследования вы пишите код, а значит что-то разрабатываете.

Поэтому мы соберем и изучим различные практики применимые в DS/ML. Этот курс направлен на то чтобы осветить какие есть проблемы в отрасли и как их можно решить.

Какой план?

  • Понимание проблематики
  • Организация процесса в команде
  • Инструменты воспроизводимости исследований

Собственно каков план на этот курс. Сегодня мы будем разбираться с проблематикой. На следующих занятиях будем затрагивать темы организации процесса в команде и инструменты необходимые для воспроизводимости исследований.

I dont’t like jupyter notebooks1

  • скрытые состояния, которые можно забыть или испортить
  • возможность запускать код в произвольном порядке
  • нет поддержки линтеров, форматеров и автокомплита
  • не поддерживают модульность и переиспользование кода
  • поощрают написание не тестируемого кода
  • приходиться писать смешанный код
  • не удобны для версионировании в гите
  • нет requirements

Резюме: jupyter notebooks поощряют вредные привычки и плохие процессы, а также препятствуют появлению хороших привычек.

Footnotes

  1. Первоисточник с конференции jupytercon - видео↩︎